লারাভেল (Laravel) একটি অত্যন্ত জনপ্রিয় PHP ফ্রেমওয়ার্ক, যা ডেভেলপারদের সহজে এবং দ্রুত অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য অনেক ফিচার সরবরাহ করে। তার মধ্যে একটি শক্তিশালী বৈশিষ্ট্য হল ইলোকোয়েন্ট ওআরএম (Eloquent ORM), যা ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি সিম্পল ও এফেক্টিভ পদ্ধতি প্রদান করে। ইলোকোয়েন্ট ORM (Object-Relational Mapping) লারাভেল অ্যাপ্লিকেশনে ডাটাবেস মডেল ব্যবস্থাপনা এবং তাদের সাথে সম্পর্কের ক্ষেত্রে অত্যন্ত গুরুত্বপূর্ণ ভূমিকা পালন করে।
ইলোকোয়েন্ট ORM একটি অবজেক্ট-অরিয়েন্টেড অ্যাপ্রোচ (Object-Oriented Approach) যা ডাটাবেসের টেবিলগুলির সাথে সম্পর্ক স্থাপন এবং তাদের ডেটা এক্সেস করতে সহায়তা করে। ইলোকোয়েন্ট আপনাকে PHP কোডের মাধ্যমে ডাটাবেস টেবিলগুলির সাথে ইন্টারঅ্যাক্ট করতে সক্ষম করে, এর ফলে SQL কোড লেখার প্রয়োজন কমে যায় এবং ডেটাবেসের কাজগুলো অনেক সহজ হয়ে ওঠে।
ইলোকোয়েন্ট ORM কাজ করার জন্য আপনাকে কিছু গুরুত্বপূর্ণ ধাপ অনুসরণ করতে হবে। প্রথমত, আপনাকে একটি মডেল তৈরি করতে হবে, যা আপনার ডাটাবেস টেবিলের প্রতিনিধিত্ব করবে।
লারাভেলে মডেল তৈরি করতে php artisan make:model
কমান্ড ব্যবহার করা হয়। উদাহরণস্বরূপ, যদি আপনি একটি Post
নামক মডেল তৈরি করতে চান:
php artisan make:model Post
এটি app/Models
ডিরেক্টরিতে একটি Post.php
ফাইল তৈরি করবে। এই মডেলটি ডাটাবেসের posts
টেবিলের সাথে সম্পর্কিত থাকবে।
মডেলটি টেবিলের সাথে সম্পর্ক স্থাপন করতে আপনাকে কিছু প্রোপার্টি বা মেথড ব্যবহার করতে হবে। যেমন:
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $table = 'posts'; // টেবিলের নাম (অথবা ডিফল্ট 'posts')
protected $fillable = ['title', 'content']; // সুরক্ষিত ফিল্ড
public $timestamps = true; // যদি টেবিলের timestamps ব্যবহার না করতে চান
}
এখানে, protected $fillable
ব্যবহার করে আপনি মডেলটির যে ফিল্ডগুলো mass-assignment (একসাথে ডেটা ইনসার্ট) এর জন্য ব্যবহারযোগ্য, তা নির্ধারণ করতে পারেন।
ইলোকোয়েন্ট ORM ব্যবহার করে ডেটা রিট্রিভ করা খুবই সহজ। আপনি বিভিন্ন মেথড ব্যবহার করে ডেটা বের করতে পারেন।
সকল পোস্ট পাওয়া:
$posts = Post::all();
একটি নির্দিষ্ট পোস্ট পাওয়া:
$post = Post::find(1); // ID ১ দিয়ে পোস্ট
শর্তসাপেক্ষ পোস্ট পাওয়া:
$posts = Post::where('status', 'published')->get();
এখানে, find()
মেথডটি একটি নির্দিষ্ট আইডি দ্বারা ডেটা রিট্রিভ করে, আর where()
মেথডটি শর্ত দিয়ে ডেটা রিট্রিভ করতে ব্যবহার করা হয়।
নতুন ডেটা ইনসার্ট করতে ইলোকোয়েন্ট ORM ব্যবহার করা অনেক সহজ:
$post = new Post;
$post->title = 'New Post';
$post->content = 'This is the content of the post';
$post->save();
এছাড়া, আপনি create()
মেথডও ব্যবহার করতে পারেন যদি $fillable
প্রোপার্টি সঠিকভাবে কনফিগার করা থাকে:
Post::create([
'title' => 'New Post',
'content' => 'This is the content of the post'
]);
ইলোকোয়েন্ট ORM দিয়ে ডেটা আপডেট করা সহজ। উদাহরণস্বরূপ:
$post = Post::find(1);
$post->title = 'Updated Title';
$post->save();
এখানে, find()
মেথডের মাধ্যমে প্রথমে পোস্ট খুঁজে বের করা হয়েছে এবং তারপর সেটির title
আপডেট করা হয়েছে।
ডেটা ডিলিট করার জন্যও ইলোকোয়েন্ট ব্যবহার করা যায়:
$post = Post::find(1);
$post->delete();
এখানে, delete()
মেথডটি ব্যবহার করে নির্দিষ্ট পোস্ট ডিলিট করা হচ্ছে।
লারাভেল ইলোকোয়েন্ট ORM বিভিন্ন ধরনের সম্পর্ক (Relationships) সমর্থন করে, যেমন একাধিক সম্পর্ক, একাধিক সম্পর্কের বিপরীত, এবং অনেকের সাথে সম্পর্ক। এর মধ্যে কিছু সাধারণ সম্পর্ক হলো:
hasOne()
, belongsTo()
hasMany()
, belongsToMany()
hasManyThrough()
উদাহরণস্বরূপ, একটি Post
এবং Comment
মডেল একে অপরের সাথে hasMany
এবং belongsTo
সম্পর্ক স্থাপন করতে পারে:
class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}
class Comment extends Model
{
public function post()
{
return $this->belongsTo(Post::class);
}
}
এখানে, Post
মডেলটি একাধিক Comment
এর সাথে সম্পর্কিত এবং Comment
মডেলটি একটি নির্দিষ্ট Post
এর সাথে সম্পর্কিত।
ইলোকোয়েন্ট ORM লারাভেলের অন্যতম শক্তিশালী বৈশিষ্ট্য, যা ডেভেলপারদের সহজ এবং পরিষ্কারভাবে ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করার সুযোগ দেয়। এটি SQL কোড লেখার প্রয়োজনীয়তা কমায় এবং ডেটাবেসের সাথে সম্পর্ক তৈরি ও পরিচালনা করার কাজকে সহজ করে তোলে।
লারাভেল (Laravel) ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হলো এলোকোয়েন্ট ORM (Object-Relational Mapping)। এটি একটি শক্তিশালী এবং সহজ ব্যবস্থাপনা সিস্টেম যা ডেটাবেসের সাথে কাজ করার জন্য অত্যন্ত কার্যকর। এলোকোয়েন্ট (Eloquent) ORM এর মাধ্যমে, আপনি ডেটাবেসের টেবিলের সাথে সম্পর্কিত মডেল তৈরি করে সহজে ডেটা পরিচালনা করতে পারেন, যেখানে SQL কোড লেখার প্রয়োজন হয় না। এটি ডেভেলপারদের জন্য ডেটাবেস অপারেশন অনেক সহজ করে তোলে।
এলোকোয়েন্ট ORM (Eloquent Object-Relational Mapping) হল লারাভেল এর অন্তর্নিহিত একটি টুল যা ডেটাবেস টেবিলের সাথে PHP অবজেক্ট মডেল তৈরি করে। এটি ডেটাবেসের রেকর্ডগুলির সাথে কাজ করার জন্য PHP ক্লাস ব্যবহার করে এবং SQL কোড কমানোর মাধ্যমে ডেটা পরিচালনা করতে সাহায্য করে। এলোকোয়েন্ট ORM ব্যবহার করে আপনি সহজে ডেটাবেসের CRUD (Create, Read, Update, Delete) অপারেশন করতে পারেন।
এলোকোয়েন্ট ORM এর মাধ্যমে ডেটাবেস টেবিলের সাথে সম্পর্কিত মডেল তৈরি করতে হয়। প্রতিটি মডেল একটি নির্দিষ্ট টেবিলের প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, যদি আপনার ডেটাবেসে একটি posts
টেবিল থাকে, তবে আপনি Post
নামক একটি মডেল তৈরি করবেন যা সেই টেবিলের জন্য কাজ করবে।
লারাভেলে মডেল তৈরি করার জন্য php artisan make:model
কমান্ড ব্যবহার করা হয়। উদাহরণ:
php artisan make:model Post
এটি app/Models/Post.php
ফাইলে একটি নতুন মডেল তৈরি করবে।
এলোকোয়েন্ট ORM এর একটি প্রধান সুবিধা হলো, মডেল এবং টেবিলের মধ্যে সম্পর্ক নির্ধারণ করা সহজ। সাধারণভাবে, লারাভেল মডেল নামের প্লুরাল ফর্মটি ডিফল্টভাবে টেবিলের নাম হিসেবে ধরে নেয়। যেমন, Post
মডেলটির সাথে posts
টেবিল সম্পর্কিত।
এলোকোয়েন্ট ORM ব্যবহার করে আপনি ডেটাবেসে CRUD অপারেশন খুব সহজে সম্পাদন করতে পারেন।
নতুন রেকর্ড তৈরি করতে create()
মেথড ব্যবহার করা হয়:
Post::create([
'title' => 'New Post',
'content' => 'This is the content of the post.',
]);
এটি নতুন একটি পোস্ট ডেটাবেসে সংরক্ষণ করবে।
ডেটাবেস থেকে ডেটা পড়তে find()
বা all()
মেথড ব্যবহার করা হয়:
$post = Post::find(1); // id = 1 এর পোস্ট
$posts = Post::all(); // সব পোস্ট
ডেটাবেসে একটি রেকর্ড আপডেট করতে update()
মেথড ব্যবহার করা হয়:
$post = Post::find(1);
$post->update([
'title' => 'Updated Title',
'content' => 'Updated content.',
]);
ডেটাবেস থেকে একটি রেকর্ড মুছে ফেলতে delete()
মেথড ব্যবহার করা হয়:
$post = Post::find(1);
$post->delete();
এলোকোয়েন্ট ORM আপনাকে ডেটাবেস টেবিলের মধ্যে সম্পর্ক (like, one-to-many, many-to-many) স্থাপন করার সুবিধা দেয়।
ধরা যাক, User
মডেলের সাথে একে এক Profile
সম্পর্ক রয়েছে। এলোকোয়েন্টে আপনি এটি এভাবে তৈরি করবেন:
class User extends Model
{
public function profile()
{
return $this->hasOne(Profile::class);
}
}
একটি Post
মডেল এবং তার সাথে সম্পর্কিত অনেক Comment
মডেল থাকতে পারে। এটি এভাবে নির্ধারণ করা হয়:
class Post extends Model
{
public function comments()
{
return $this->hasMany(Comment::class);
}
}
এলোকোয়েন্টে belongsToMany
মেথড ব্যবহার করে many-to-many সম্পর্ক তৈরি করা যায়। যেমন, একটি User
মডেল এবং Role
মডেলের মধ্যে many-to-many সম্পর্ক:
class User extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class);
}
}
এলোকোয়েন্ট ORM আপনাকে ডেটাবেসে ইনপুট করার আগে মডেল ফিল্ড ভ্যালিডেশন করার সুযোগ দেয়। আপনি fillable
বা guarded
প্রপার্টি ব্যবহার করে কনফিগার করতে পারেন কোন ফিল্ডগুলো মডেলে অ্যাসাইন করা যাবে।
class Post extends Model
{
protected $fillable = ['title', 'content'];
}
এভাবে, শুধু title
এবং content
ফিল্ডে মান ইনপুট করা যাবে, অন্য কোনো ফিল্ড ইনপুট করা যাবে না।
এলোকোয়েন্ট ORM একটি শক্তিশালী টুল যা লারাভেল ডেভেলপারদের ডেটাবেসের সাথে সম্পর্কিত কাজগুলো খুব সহজে করতে সহায়তা করে। মডেল তৈরির মাধ্যমে আপনি ডেটাবেসের টেবিলগুলোর সাথে সম্পর্ক স্থাপন করতে পারেন এবং CRUD অপারেশনসহ বিভিন্ন জটিল সম্পর্ক ম্যানেজ করতে পারবেন। এলোকোয়েন্ট ORM ডেটাবেসের সাথে কাজ করার ক্ষেত্রে একটি সিম্পল, ক্লিন এবং উন্নত পদ্ধতি প্রদান করে যা ডেভেলপমেন্ট প্রক্রিয়াকে দ্রুত এবং দক্ষ করে তোলে।
লারাভেল (Laravel) একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা রিলেশনশিপ (Relationship) পরিচালনার জন্য উন্নত ফিচার সরবরাহ করে। রিলেশনশিপ ব্যবস্থাপনা হলো ডাটাবেস টেবিলগুলোর মধ্যে সম্পর্ক তৈরি এবং পরিচালনা করার প্রক্রিয়া। লারাভেল ডাটাবেস রিলেশনশিপে কার্যকরীভাবে কাজ করার জন্য একাধিক রিলেশনশিপ টপোলজি সমর্থন করে, যেমন One-to-One, One-to-Many, Many-to-Many, এবং Polymorphic রিলেশনশিপ।
ডাটাবেস রিলেশনশিপ ব্যবহারের মাধ্যমে আপনি বিভিন্ন টেবিলের মধ্যে সম্পর্ক স্থাপন করতে পারেন। উদাহরণস্বরূপ, একটি ব্লগ পোস্ট এবং তার কমেন্টের মধ্যে সম্পর্ক বা একটি অর্ডার এবং তার পণ্যগুলোর মধ্যে সম্পর্ক। রিলেশনশিপ ব্যবহারের মাধ্যমে আপনি ডেটা প্রক্রিয়াজাত করতে পারবেন এবং কোড আরও সহজ ও পরিষ্কার হবে।
লারাভেল বেশ কয়েকটি প্রধান রিলেশনশিপ ধরন সমর্থন করে:
এটি তখন ব্যবহার করা হয় যখন এক টেবিলের একটি রেকর্ড আরেক টেবিলের এক রেকর্ডের সাথে সম্পর্কিত থাকে। যেমন, একটি ইউজারের একটি প্রোফাইল থাকতে পারে।
ধরা যাক, আমাদের একটি User
মডেল এবং একটি Profile
মডেল আছে। প্রতিটি ব্যবহারকারীর একটি প্রোফাইল থাকবে।
// User.php
public function profile()
{
return $this->hasOne(Profile::class);
}
// Profile.php
public function user()
{
return $this->belongsTo(User::class);
}
এখানে, User
মডেলটি hasOne()
মেথডের মাধ্যমে প্রোফাইলের সাথে সম্পর্ক স্থাপন করেছে, এবং Profile
মডেলটি belongsTo()
মেথডের মাধ্যমে ইউজারের সাথে সম্পর্ক স্থাপন করেছে।
এটি তখন ব্যবহার করা হয় যখন একটি টেবিলের একটি রেকর্ড অনেক রেকর্ডের সাথে সম্পর্কিত থাকে। যেমন, একটি ব্লগ পোস্টের অনেক কমেন্ট থাকতে পারে।
ধরা যাক, আমাদের একটি Post
মডেল এবং একটি Comment
মডেল আছে। একটি পোস্টের অনেক কমেন্ট থাকতে পারে।
// Post.php
public function comments()
{
return $this->hasMany(Comment::class);
}
// Comment.php
public function post()
{
return $this->belongsTo(Post::class);
}
এখানে, Post
মডেলটি hasMany()
মেথডের মাধ্যমে কমেন্টের সাথে সম্পর্ক স্থাপন করেছে, এবং Comment
মডেলটি belongsTo()
মেথডের মাধ্যমে পোস্টের সাথে সম্পর্ক স্থাপন করেছে।
এটি তখন ব্যবহার করা হয় যখন দুটি টেবিলের মধ্যে অনেক রেকর্ড একে অপরের সাথে সম্পর্কিত থাকে। যেমন, একটি ছাত্রের অনেক কোর্স থাকতে পারে এবং একটি কোর্সে অনেক ছাত্র থাকতে পারে।
ধরা যাক, আমাদের একটি Student
মডেল এবং একটি Course
মডেল আছে। এক ছাত্রের অনেক কোর্স থাকতে পারে এবং একটি কোর্সে অনেক ছাত্র থাকতে পারে।
// Student.php
public function courses()
{
return $this->belongsToMany(Course::class);
}
// Course.php
public function students()
{
return $this->belongsToMany(Student::class);
}
এখানে, Student
মডেলটি belongsToMany()
মেথডের মাধ্যমে কোর্সের সাথে সম্পর্ক স্থাপন করেছে, এবং Course
মডেলটি belongsToMany()
মেথডের মাধ্যমে ছাত্রদের সাথে সম্পর্ক স্থাপন করেছে। এই ধরনের রিলেশনশিপে লারাভেল একটি পিভট টেবিল (pivot table) ব্যবহার করে, যেমন course_student
।
পলিমর্ফিক রিলেশনশিপ তখন ব্যবহার করা হয় যখন একাধিক মডেল একই রিলেশনশিপ শেয়ার করে। যেমন, একটি কমেন্ট মডেল হতে পারে যা একটি ব্লগ পোস্ট বা একটি ছবি উভয়ের উপর করা যেতে পারে।
ধরা যাক, আমাদের একটি Comment
মডেল এবং দুটি মডেল Post
এবং Video
আছে। একটি কমেন্ট পোস্ট অথবা ভিডিওতে থাকতে পারে।
// Comment.php
public function commentable()
{
return $this->morphTo();
}
// Post.php
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
// Video.php
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
এখানে, Comment
মডেলটি morphTo()
মেথড ব্যবহার করে commentable
সম্পর্ক তৈরি করেছে, এবং Post
এবং Video
মডেলগুলি morphMany()
মেথড ব্যবহার করে কমেন্টের সাথে সম্পর্ক স্থাপন করেছে।
লারাভেলে রিলেশনশিপ ব্যবহারের মাধ্যমে আপনি সহজেই সম্পর্কিত ডেটা একত্রিত করতে পারেন। যেমন:
$post = Post::find(1);
$comments = $post->comments; // পোস্টের সব কমেন্ট
$student = Student::find(1);
$courses = $student->courses; // ছাত্রের সব কোর্স
$post = Post::find(1);
$comments = $post->comments; // পোস্টের সব কমেন্ট
$video = Video::find(1);
$comments = $video->comments; // ভিডিওর সব কমেন্ট
লারাভেল রিলেশনশিপ আপনাকে ডাটাবেসের মধ্যে সম্পর্কিত ডেটা সহজেই ম্যানেজ এবং রিট্রিভ করতে সহায়তা করে। One-to-One
, One-to-Many
, Many-to-Many
, এবং Polymorphic
রিলেশনশিপগুলোর মাধ্যমে ডেটা ম্যানিপুলেশন এবং কোডিং আরও কার্যকরী ও পরিষ্কার করা সম্ভব।
লারাভেল (Laravel) একটি অত্যন্ত শক্তিশালী PHP ফ্রেমওয়ার্ক, যা ডেভেলপারদের দ্রুত এবং কার্যকরীভাবে অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। এর মধ্যে এলোকোয়েন্ট কালেশন (Eloquent Collection) একটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য। এটি একটি আরামদায়ক এবং শক্তিশালী টুল যা ডাটাবেইজ থেকে রেকর্ডগুলো সংগ্রহ করার পর তাদের ওপর নানা ধরনের অপারেশন করতে সাহায্য করে।
এলোকোয়েন্ট কালেশন (Eloquent Collection) হল একটি বস্তু (object) যা ডাটাবেইজ থেকে ফেরত আসা এক বা একাধিক মডেল ইনস্ট্যান্স ধারণ করে। এটি একটি বিশেষ ধরনের অ্যারে (array), যা রেকর্ডগুলোর ওপর বিভিন্ন ধরনের কার্যকলাপ পরিচালনা করতে পারে। এলোকোয়েন্ট কালেশন ব্যবহার করে আপনি ডাটাবেইজ থেকে ফেচ করা ডেটা সহজেই ম্যানিপুলেট (manipulate) করতে পারেন, যেমন ফিল্টারিং, ম্যাপিং, অ্যাগ্রিগেটিং ইত্যাদি।
লারাভেল ইলেকোয়েন্ট কালেশন সাধারণত মডেল থেকে ডেটা ফেচ করার পর তৈরি হয়। নিচে একটি উদাহরণ দেওয়া হল:
use App\Models\Post;
$posts = Post::all();
এখানে, Post::all()
কমান্ডটি posts
টেবিলের সমস্ত রেকর্ড ফিরিয়ে দেবে এবং একটি কালেশন ইনস্ট্যান্স তৈরি হবে।
লারাভেল এলোকোয়েন্ট কালেশন বেশ কিছু গুরুত্বপূর্ণ মেথড সরবরাহ করে যা ডেটার উপর বিভিন্ন অপারেশন করতে সাহায্য করে। নিচে কিছু প্রধান মেথডের উদাহরণ দেওয়া হল:
each()
মেথডeach()
মেথডের মাধ্যমে আপনি কালেশনের প্রতিটি আইটেমের উপর একটি কাজ করতে পারেন।
$posts->each(function($post) {
echo $post->title;
});
এই কোডটি কালেশন থেকে প্রতিটি Post
এর title
প্রিন্ট করবে।
filter()
মেথডfilter()
মেথড ব্যবহার করে আপনি কালেশন থেকে নির্দিষ্ট শর্ত অনুসারে আইটেম ফিল্টার করতে পারেন।
$filteredPosts = $posts->filter(function($post) {
return $post->status == 'published';
});
এখানে, filter()
মেথডটি status
কলামের মান যদি published
হয়, তবে সেই রেকর্ডগুলোকে ফিরিয়ে দেবে।
map()
মেথডmap()
মেথডের মাধ্যমে আপনি কালেশন প্রতিটি আইটেমের মান পরিবর্তন বা ট্রান্সফর্ম (transform) করতে পারেন।
$titles = $posts->map(function($post) {
return $post->title;
});
এখানে, map()
মেথডটি প্রতিটি পোস্টের title
রিটার্ন করবে এবং একটি নতুন কালেশন তৈরি হবে।
pluck()
মেথডpluck()
মেথড ব্যবহার করে আপনি শুধুমাত্র নির্দিষ্ট কলামের মান বের করতে পারেন।
$titles = $posts->pluck('title');
এটি posts
টেবিলের সব title
কলাম থেকে মান সংগ্রহ করবে।
reduce()
মেথডreduce()
মেথড কালেশন থেকে একটি একক মান তৈরি করতে ব্যবহৃত হয়।
$totalLikes = $posts->reduce(function($carry, $post) {
return $carry + $post->likes;
}, 0);
এখানে, reduce()
মেথডটি পোস্টের likes
সংখ্যা গুলি যোগ করে একটি মোট পরিমাণ বের করবে।
sortBy()
মেথডsortBy()
মেথড ব্যবহার করে আপনি কালেশনটি কোনো নির্দিষ্ট কলামের ভিত্তিতে সাজাতে পারেন।
$sortedPosts = $posts->sortBy('created_at');
এটি পোস্টগুলোকে created_at
কলামের ভিত্তিতে সাজাবে।
first()
মেথডfirst()
মেথডটি কালেশন থেকে প্রথম আইটেমটি বের করে আনে।
$firstPost = $posts->first();
এখানে, প্রথম পোস্টটি রিটার্ন করা হবে।
এলোকোয়েন্ট কালেশন বেশ কিছু অ্যাগ্রিগেটিং ফাংশনও সরবরাহ করে, যেমন:
count()
: কালেশনে মোট আইটেমের সংখ্যা।sum()
: নির্দিষ্ট কলামের মোট যোগফল।avg()
: নির্দিষ্ট কলামের গড় মান।min()
এবং max()
: নির্দিষ্ট কলামের সর্বনিম্ন এবং সর্বোচ্চ মান।$totalPosts = $posts->count();
$totalLikes = $posts->sum('likes');
$averageLikes = $posts->avg('likes');
এলোকোয়েন্ট কালেশন পেজিনেশন সমর্থন করে, যার মাধ্যমে আপনি ডেটাকে বিভিন্ন পেজে ভাগ করে দেখাতে পারেন।
$posts = Post::paginate(10);
এটি প্রতি পেজে ১০টি পোস্ট প্রদর্শন করবে।
এলোকোয়েন্ট কালেশন লারাভেল ডেভেলপমেন্টে একটি অত্যন্ত শক্তিশালী টুল। এটি ডাটাবেইজ থেকে ফেচ করা ডেটাকে ম্যানিপুলেট করার জন্য সহজ এবং চমৎকার মেথড সরবরাহ করে, যা ডেভেলপারদের কোডিং প্রক্রিয়া দ্রুত এবং কার্যকরী করতে সহায়তা করে।
লারাভেল (Laravel) একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা ডেভেলপারদের অ্যাপ্লিকেশন তৈরির সময় বিভিন্ন টুলস এবং ফিচার প্রদান করে। এর মধ্যে একটি গুরুত্বপূর্ণ ফিচার হলো মিউটেটর (Mutator) এবং কাস্ট (Cast)। এই ফিচারগুলো ব্যবহার করে আপনি ডাটাবেইজের মধ্যে থাকা ডেটার রূপান্তর বা পরিবর্তন সহজে করতে পারেন, যা আপনাকে ডেটার ভ্যালু সংরক্ষণ বা পাওয়ার সময় বিভিন্ন ধরনের কাস্টমাইজেশন করতে সহায়তা করে।
মিউটেটর হল এমন একটি ফিচার যা মডেল (Model) এর মধ্যে ডেটার মান সেট করার আগে বা আপডেট করার সময় অটোমেটিকভাবে ডেটা প্রক্রিয়া বা পরিবর্তন করে। যখন আপনি কোনো মডেল এর প্রপার্টি সেট করেন, তখন মিউটেটর তা প্রক্রিয়া করে এবং নতুন মান সেট করে।
লারাভেলে মিউটেটর তৈরি করতে হলে, মডেল ক্লাসে একটি বিশেষ মেথড তৈরি করতে হয়। এই মেথডটি set{Attribute}Attribute
নামে হবে, যেখানে {Attribute}
হলো সেই প্রপার্টির নাম যার জন্য আপনি মিউটেটর তৈরি করতে চান।
উদাহরণস্বরূপ, যদি আপনি চান যে ব্যবহারকারীর নামটি সঠিকভাবে কিপ-টু-কেস (uppercase) এ স্টোর হোক, তাহলে আপনাকে মিউটেটর তৈরি করতে হবে:
class User extends Model
{
// মিউটেটর: নামটি কিপ-টু-কেস হিসেবে সেট করা হবে
public function setNameAttribute($value)
{
$this->attributes['name'] = ucwords(strtolower($value));
}
}
এখানে, setNameAttribute
মেথডটি ব্যবহারকারীর নামটি গ্রহণ করবে, তা ছোট অক্ষরে রূপান্তরিত করবে এবং প্রথম অক্ষর বড় (uppercase) করবে।
কাস্ট হল একটি সুবিধা যা ডেটাবেইজ থেকে ডেটা পাওয়ার সময় বা সেট করার সময় এটি একটি নির্দিষ্ট ডেটা টাইপে কনভার্ট করে দেয়। এটি ডেটাকে নির্দিষ্ট একটি টাইপে রূপান্তরিত করে, যেমন একটি স্ট্রিংকে ইনটিজারে, বা একটি ডেটাকে ডেটটাইম ইনস্ট্যান্সে রূপান্তর করা।
লারাভেল কাস্ট করার জন্য আপনি মডেল ক্লাসে $casts
প্রপার্টি ব্যবহার করেন। এই প্রপার্টি একটি অ্যারে হিসেবে ডেটা টাইপ কাস্টিং নির্দেশ করে।
উদাহরণস্বরূপ, যদি আপনি চান যে একটি created_at
ফিল্ড স্বয়ংক্রিয়ভাবে একটি Carbon
ডেটটাইম ইনস্ট্যান্সে কাস্ট হয়ে যাক:
class Post extends Model
{
protected $casts = [
'created_at' => 'datetime',
];
}
এখানে, created_at
ফিল্ডটি একটি ডেটাবেইজ ফিল্ড হিসেবে স্টোর হওয়া সত্ত্বেও, যখন আপনি এই ফিল্ডটি অ্যাক্সেস করবেন, এটি একটি Carbon
ডেটটাইম অবজেক্ট হিসেবে রিটার্ন হবে। এর ফলে আপনি সরাসরি ডেটা থেকে ডেটটাইম সম্পর্কিত বিভিন্ন ফাংশন ব্যবহার করতে পারবেন।
লারাভেলে কিছু সাধারণ কাস্ট টাইপ রয়েছে যেগুলি আপনি $casts
প্রপার্টিতে ব্যবহার করতে পারেন:
class Post extends Model
{
protected $casts = [
'is_active' => 'boolean',
'tags' => 'array',
'published_at' => 'datetime',
];
}
এখানে:
is_active
ফিল্ডটি একটি বুলিয়ান ভ্যালু হিসেবে কাস্ট হবে।tags
ফিল্ডটি একটি অ্যারে টাইপ হিসেবে কাস্ট হবে।published_at
ফিল্ডটি একটি ডেটটাইম অবজেক্টে কাস্ট হবে।লারাভেল মিউটেটর এবং কাস্ট আপনাকে ডেটা সেট করার এবং অ্যাক্সেস করার সময় ডেটার প্রক্রিয়াজাতকরণ এবং রূপান্তর সহজ করে তোলে। মিউটেটরগুলি ডেটা সেট করার সময় কাস্টম লজিক প্রয়োগ করতে সহায়তা করে, এবং কাস্ট ডেটাবেইজ থেকে ডেটা পেতে সময় ডেটার টাইপ রূপান্তর সহজ করে তোলে। এই দুটি ফিচার ব্যবহারের মাধ্যমে আপনি কোডকে আরও পরিষ্কার, কার্যকরী, এবং রিয়ুসেবল করতে পারবেন।
লারাভেল (Laravel) একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা ডেভেলপারদের দ্রুত এবং কার্যকরীভাবে API তৈরি করতে সহায়তা করে। লারাভেল এপিআই রিসোর্স (Laravel API Resource) একটি গুরুত্বপূর্ণ ফিচার, যা আপনাকে API রেসপন্সের ডেটা ফরম্যাট করতে এবং সহজভাবে JSON রেসপন্স তৈরি করতে সাহায্য করে।
এপিআই রিসোর্স (API Resource) হল একটি ক্লাস যা লারাভেলে API রেসপন্স তৈরির প্রক্রিয়াটি সহজ করে। এটি মূলত ডাটাবেস মডেল বা কালেকশনের (Collection) ডেটাকে JSON ফরম্যাটে কাস্টমাইজড আউটপুটে রূপান্তরিত করে, যাতে আপনার API আরও পরিষ্কার এবং ব্যবহারকারী-বান্ধব হয়।
API রিসোর্স ব্যবহার করে আপনি API রেসপন্সের কাস্টম ডেটা ফরম্যাট তৈরি করতে পারেন, যেমন ডেটা ম্যানিপুলেশন, সম্পর্কিত মডেলগুলির অন্তর্ভুক্তি, বা অতিরিক্ত তথ্য যোগ করা।
লারাভেলে API রিসোর্স তৈরি করতে php artisan make:resource
কমান্ড ব্যবহার করা হয়। উদাহরণস্বরূপ, যদি আপনি একটি UserResource
নামক রিসোর্স তৈরি করতে চান, তাহলে কমান্ড হবে:
php artisan make:resource UserResource
এই কমান্ডটি app/Http/Resources
ডিরেক্টরিতে UserResource
ক্লাস তৈরি করবে।
UserResource
ক্লাসটি ডিফল্টভাবে এর মতো কিছু কোড থাকবে:
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
];
}
}
এখানে, toArray()
মেথডটি রিটার্ন করবে সেই ডেটার একটি অ্যারে যা আপনি API রেসপন্সে দেখাতে চান। $this->
এর মাধ্যমে মডেলের প্রপার্টি অ্যাক্সেস করা হয়।
এখন, যখন আপনি UserResource
রিসোর্স ব্যবহার করতে চান, তখন এটি সাধারণত রিসোর্সের মাধ্যমে মডেল বা কালেকশন রিটার্ন করতে হয়। উদাহরণস্বরূপ, যদি আপনি একটি User
মডেল রিটার্ন করতে চান:
use App\Http\Resources\UserResource;
public function show($id)
{
$user = User::findOrFail($id);
return new UserResource($user);
}
এখানে, new UserResource($user)
ব্যবহার করে একটি একক User
মডেল JSON রেসপন্সে রূপান্তরিত হচ্ছে।
যদি আপনি একাধিক User
মডেল রিটার্ন করতে চান, তাহলে কালেকশন রিসোর্স ব্যবহার করতে হবে। UserResource
রিসোর্স ক্লাসটি কেবল একক রেকর্ডের জন্য কাজ করবে, কিন্তু কালেকশন রিসোর্স Collection
ক্লাসে ব্যবহার করা যেতে পারে।
এখন, একটি কালেকশন রিসোর্স তৈরি করতে হবে। উদাহরণস্বরূপ:
use App\Http\Resources\UserResource;
public function index()
{
$users = User::all();
return UserResource::collection($users);
}
এখানে, UserResource::collection($users)
ব্যবহার করে একাধিক User
মডেল JSON রেসপন্সে রূপান্তরিত হচ্ছে।
লারাভেলে API রিসোর্সের মাধ্যমে আপনি সম্পর্কিত মডেল (Relationship Models) যুক্ত করতে পারেন। উদাহরণস্বরূপ, ধরুন একটি User
মডেলের সাথে Post
মডেল সম্পর্কিত, এবং আপনি ব্যবহারকারীর সাথে পোস্টও অন্তর্ভুক্ত করতে চান। তখন এটি নিম্নরূপ করা যেতে পারে:
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'posts' => PostResource::collection($this->whenLoaded('posts')),
];
}
এখানে, whenLoaded('posts')
মেথডটি নিশ্চিত করবে যে posts
সম্পর্কটি তখনই অন্তর্ভুক্ত হবে যখন তা লোড করা হবে। PostResource::collection()
ব্যবহার করে সম্পর্কিত পোস্টগুলির জন্য রিসোর্স রিটার্ন করা হয়।
আপনি চাইলে রিসোর্সের ডেটাকে আরো কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, আপনি রেসপন্সের মধ্যে কিছু কন্ডিশনাল ডেটা যুক্ত করতে পারেন। যেমন:
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'profile_url' => $this->when($this->profile, url('/profile/'.$this->profile)),
];
}
এখানে, when()
মেথডটি ডেটা কন্ডিশনালি যোগ করার জন্য ব্যবহার করা হয়। যদি $this->profile
থাকে, তবে profile_url
যুক্ত হবে।
লারাভেল API রিসোর্সের মাধ্যমে আপনি রেসপন্সের ফরম্যাটও কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, আপনি যদি API রেসপন্সের মধ্যে মেটাডেটা যোগ করতে চান:
public function with($request)
{
return [
'meta' => [
'version' => '1.0.0',
'author' => 'John Doe',
],
];
}
এটি আপনার রেসপন্সে অতিরিক্ত মেটাডেটা যোগ করবে যা সাধারণত API সংস্করণ বা ডেভেলপার তথ্য হতে পারে।
লারাভেল API রিসোর্সের মাধ্যমে আপনি API রেসপন্সগুলো আরও কাস্টমাইজ এবং সংগঠিত করতে পারেন, যা API ব্যবহারকারীদের জন্য আরো পরিষ্কার এবং কার্যকরী করে তোলে। এটি বিশেষ করে বড় অ্যাপ্লিকেশনগুলোতে, যেখানে ডেটা বিভিন্ন সম্পর্কযুক্ত মডেল ও রেসপন্স ফরম্যাটে থাকতে পারে, খুবই কার্যকরী।
লারাভেল (Laravel) একটি আধুনিক PHP ফ্রেমওয়ার্ক যা ডেটা ম্যানিপুলেশন, স্টোরেজ, এবং ট্রান্সফার সহজতর করার জন্য সিরিয়ালাইজেশন (Serialization) ফিচার সরবরাহ করে। সিরিয়ালাইজেশন হল একটি প্রক্রিয়া যার মাধ্যমে একটি অবজেক্ট অথবা ডেটা স্ট্রাকচারকে এমন একটি ফরম্যাটে রূপান্তর করা হয় যা সঞ্চয় বা পরিবহনযোগ্য হয়। লারাভেল সিরিয়ালাইজেশন ডেটাকে একটি নির্দিষ্ট স্ট্রিং ফরম্যাটে রূপান্তর করে যা পরে পুনরায় অবজেক্টে পরিবর্তন করা যায়।
সিরিয়ালাইজেশন (Serialization) হল ডেটা অথবা অবজেক্টকে একটি স্ট্রিং, JSON, অথবা অন্য কোনো ফরম্যাটে রূপান্তর করার প্রক্রিয়া, যাতে তা সঞ্চয় (storage) বা পরিবহন (transmission) করা যেতে পারে। এই প্রক্রিয়াটি সাধারণত ক্লাস অবজেক্টগুলিকে স্টোর করার জন্য ব্যবহৃত হয়, যাতে পরে সেগুলি পুনরুদ্ধার বা রিড করতে সহজ হয়।
লারাভেলে সিরিয়ালাইজেশন বেশ সহজ, কারণ এটি Illuminate\Support\Facades\Cache
, Illuminate\Database\Eloquent\Model
, এবং অন্যান্য লারাভেল ফিচারের মাধ্যমে কাজ করে। লারাভেল ডিফল্টভাবে বিভিন্ন সিরিয়ালাইজেশন ফর্ম্যাট যেমন JSON, অ্যারে, এবং ক্যাশিং সিস্টেমে ব্যবহৃত হয়।
লারাভেলে সিরিয়ালাইজেশন ব্যবহারের জন্য বিভিন্ন পদ্ধতি রয়েছে। চলুন, কিছু গুরুত্বপূর্ণ পদ্ধতি দেখি:
লারাভেল json_encode()
ফাংশনের মাধ্যমে কোনো অ্যারে বা অবজেক্টকে JSON ফরম্যাটে সিরিয়ালাইজ করতে পারে। উদাহরণ:
$data = ['name' => 'John Doe', 'email' => 'johndoe@example.com'];
$json = json_encode($data);
এখানে, $data
অ্যারে কে JSON ফরম্যাটে রূপান্তরিত করা হয়েছে।
লারাভেল মডেল অবজেক্ট বা অন্য কোনো অবজেক্টকে JSON ফরম্যাটে সিরিয়ালাইজ করতে toJson()
ফাংশন ব্যবহার করা হয়। উদাহরণ:
$user = User::find(1);
$json = $user->toJson();
এখানে, User
মডেল থেকে অবজেক্টকে JSON ফরম্যাটে রূপান্তর করা হয়েছে।
লারাভেল মডেল ক্লাসগুলিতে একটি serialize()
এবং unserialize()
পদ্ধতি থাকে, যার মাধ্যমে অবজেক্টগুলোকে সিরিয়ালাইজ করা এবং পুনরুদ্ধার করা যায়। উদাহরণ:
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $casts = [
'options' => 'array',
];
}
এখানে, options
ফিল্ডটি অটোমেটিক্যালি অ্যারে হিসেবে ক্যাস্ট (cast) হবে যখন এটি ডেটাবেস থেকে রিট্রিভ করা হবে এবং সিরিয়ালাইজেশন প্রক্রিয়া পরিচালিত হবে।
লারাভেলে ক্যাশে ডেটা সিরিয়ালাইজেশন স্বয়ংক্রিয়ভাবে করে থাকে। যখন আপনি ক্যাশে ডেটা সংরক্ষণ করেন, তখন এটি সিরিয়ালাইজ করা হয়। উদাহরণ:
Cache::put('user_1', $user, 60);
এখানে, $user
অবজেক্টটি ক্যাশে সংরক্ষণ করা হবে এবং এটি স্বয়ংক্রিয়ভাবে সিরিয়ালাইজ হয়ে যাবে। পরবর্তীতে এটি Cache::get()
ফাংশন দিয়ে পুনরুদ্ধার করা যাবে।
লারাভেলে, আপনি যদি কোনো কাস্টম অবজেক্ট সিরিয়ালাইজ করতে চান, তবে আপনি JsonSerializable
ইন্টারফেস ইমপ্লিমেন্ট করতে পারেন। উদাহরণ:
class Product implements JsonSerializable
{
public $name;
public $price;
public function jsonSerialize()
{
return [
'product_name' => $this->name,
'product_price' => $this->price,
];
}
}
$product = new Product();
$product->name = 'Laptop';
$product->price = 1000;
echo json_encode($product);
এখানে, jsonSerialize()
মেথডটি কাস্টম JSON আউটপুট তৈরি করবে।
সিরিয়ালাইজেশন ব্যবহারের সময় নিরাপত্তা বিশেষভাবে গুরুত্বপূর্ণ, কারণ যেকোনো অবজেক্ট পুনরুদ্ধারের সময় এটি অপব্যবহার হতে পারে। বিশেষত, অবজেক্ট ইনজেকশন (Object Injection) এর মতো আক্রমণগুলি হতে পারে, যেখানে আক্রমণকারী সিরিয়ালাইজড ডেটাতে ক্ষতিকর কোড ইনজেক্ট করতে পারে। তাই সিরিয়ালাইজেশন ব্যবহারের সময় নিশ্চিত করুন যে আপনার কোড সুরক্ষিত এবং অবজেক্ট ইনজেকশন আক্রমণ থেকে মুক্ত।
লারাভেল ডিফল্টভাবে এই ধরনের আক্রমণের বিরুদ্ধে সুরক্ষিত, তবে আপনি যদি কাস্টম সিরিয়ালাইজেশন ব্যবহারে যাচ্ছেন, তবে এর প্রতি বিশেষ মনোযোগ দিন।
লারাভেল সিরিয়ালাইজেশন ডেটা সংরক্ষণ, পরিবহন, এবং পুনরুদ্ধারের জন্য একটি শক্তিশালী বৈশিষ্ট্য। এটি JSON, অ্যারে, ক্যাশ ইত্যাদিতে ডেটাকে সহজে সিরিয়ালাইজ করতে সক্ষম। লারাভেল প্যাকেজ এবং মডেলগুলোর জন্য সিরিয়ালাইজেশন ব্যবহারের ফলে ডেটার নিরাপদ এবং কার্যকরী পরিচালনা নিশ্চিত হয়।
লারাভেল (Laravel) একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা ডাটাবেইজ ম্যানিপুলেশন এবং ডামি ডেটা জেনারেশনকে সহজ করে তোলে। লারাভেল ফ্যাক্টরি (Laravel Factory) একটি বিশেষ টুল যা আপনাকে ডাটাবেইজের জন্য ডামি বা ফেক ডেটা তৈরি করতে সহায়তা করে। এটি ডেভেলপারদেরকে ডাটাবেইজে দ্রুত ডামি ডেটা ইনসার্ট করার সুবিধা দেয়, যা টেস্টিং বা ডেভেলপমেন্টের জন্য অত্যন্ত কার্যকর।
ফ্যাক্টরি (Factory) হল এমন একটি টুল যা ডাটাবেইজ টেবিলের জন্য ডামি ডেটা তৈরি করতে ব্যবহৃত হয়। সাধারণত, ডেভেলপমেন্ট বা টেস্টিং সময় সঠিক ডেটা থাকা প্রয়োজন হয় না, তাই আপনি ফ্যাক্টরি ব্যবহার করে সহজে ফেক ডেটা তৈরি করে অ্যাপ্লিকেশনটি টেস্ট করতে পারেন। এটি মডেল, ডাটাবেইজ টেবিল, এবং ডাটা ফিল্ডের জন্য ডামি ভ্যালু তৈরি করতে সাহায্য করে।
hasOne
, hasMany
ইত্যাদি সাপোর্ট করে, যার মাধ্যমে সম্পর্কিত ডামি ডেটা তৈরি করা সম্ভব।লারাভেল ফ্যাক্টরি তৈরি করতে php artisan make:factory
কমান্ড ব্যবহার করা হয়। উদাহরণস্বরূপ, যদি আপনি একটি Post
মডেলের জন্য ফ্যাক্টরি তৈরি করতে চান, তাহলে নিম্নলিখিত কমান্ডটি ব্যবহার করবেন:
php artisan make:factory PostFactory
এটি database/factories
ডিরেক্টরিতে PostFactory.php
নামক একটি নতুন ফাইল তৈরি করবে।
PostFactory.php
ফাইলের মধ্যে আপনি কীভাবে ডামি ডেটা তৈরি করতে চান তা নির্ধারণ করবেন। উদাহরণস্বরূপ:
namespace Database\Factories;
use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;
class PostFactory extends Factory
{
protected $model = Post::class;
public function definition()
{
return [
'title' => $this->faker->sentence,
'content' => $this->faker->paragraph,
'status' => $this->faker->randomElement(['draft', 'published']),
];
}
}
এখানে, definition()
মেথডের মধ্যে faker
লাইব্রেরির সাহায্যে ফেক ডেটা তৈরি করা হয়েছে। faker
ডেটা তৈরি করার জন্য একটি খুবই শক্তিশালী লাইব্রেরি যা নাম, ঠিকানা, ফোন নম্বর, তারিখ ইত্যাদি ডেটা জেনারেট করতে পারে।
এখন, আপনি তৈরি করা ফ্যাক্টরি ব্যবহার করে ডামি ডেটা তৈরি করতে পারেন। সাধারণত, ফ্যাক্টরি ব্যবহার করা হয় ডাটাবেইজ সিডিং (Seeding) বা টেস্টিং এর সময়।
একটি Post
মডেলের জন্য ১০টি ডামি রেকর্ড ইনসার্ট করতে:
Post::factory()->count(10)->create();
এটি posts
টেবিলে ১০টি ডামি রেকর্ড ইনসার্ট করবে।
ধরা যাক, Post
মডেল একটি User
মডেলের সাথে সম্পর্কিত, এবং আপনি একটি User
এবং তার সাথে সম্পর্কিত Post
তৈরি করতে চান:
use App\Models\User;
User::factory()
->hasPosts(5) // ৫টি পোস্ট সম্পর্কিত
->create();
এখানে, hasPosts(5)
নির্দেশ করে যে, একটি User
এর সাথে ৫টি Post
সম্পর্কিত থাকবে।
লারাভেলে আপনি সিডিং (Seeding) এর মাধ্যমে ফ্যাক্টরি ব্যবহার করতে পারেন, যাতে ডাটাবেইজে ডামি ডেটা ইনসার্ট করা যায়। সিডার ক্লাসে ফ্যাক্টরি ব্যবহার করা হয়:
প্রথমে একটি সিডার তৈরি করুন:
php artisan make:seeder PostSeeder
এটি database/seeders
ডিরেক্টরিতে একটি সিডার ক্লাস তৈরি করবে। এরপর আপনি সিডার ফাইলে ফ্যাক্টরি ব্যবহার করতে পারেন:
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Post;
class PostSeeder extends Seeder
{
public function run()
{
Post::factory()->count(10)->create();
}
}
এরপর, সিডার চালানোর জন্য নিচের কমান্ডটি ব্যবহার করুন:
php artisan db:seed --class=PostSeeder
এটি PostSeeder
সিডার চালাবে এবং ডাটাবেইজে ১০টি ডামি Post
ইনসার্ট করবে।
লারাভেল ফ্যাক্টরি টেস্টিংয়ের জন্যও খুবই উপকারী। আপনি আপনার ইউনিট টেস্টে ডামি ডেটা ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
public function testPostCreation()
{
$post = Post::factory()->create();
$this->assertDatabaseHas('posts', [
'id' => $post->id,
'title' => $post->title,
]);
}
এখানে, Post::factory()->create()
ডামি ডেটা তৈরি করছে এবং assertDatabaseHas()
দিয়ে যাচাই করছে যে ডাটাবেইজে সেই রেকর্ডটি রয়েছে।
লারাভেল ফ্যাক্টরি ডেভেলপারদের জন্য একটি অত্যন্ত শক্তিশালী টুল যা ডাটাবেইজের জন্য ডামি ডেটা দ্রুত এবং সহজভাবে তৈরি করতে সহায়তা করে। এটি টেস্টিং, সিডিং, এবং ডেভেলপমেন্ট কাজগুলোকে আরও দ্রুত এবং কার্যকরী করে তোলে।
Read more